/**
**********************************************************************************************************************************************************************************************************************************
* @file:	ModBuildin.h
* @author:	zinface
* @date:	2021年11月10日 15:35:49 星期三
* @brief:	FinalMod 提供的内建模块功能
**********************************************************************************************************************************************************************************************************************************
**/

#ifndef __MODBUILDIN__H__
#define __MODBUILDIN__H__


#include "FinalMod.h"

// #define ModStructMetaSym FinalMod_META_SYM

FinalMod_Module_Define(ModDL) {
    void *dl;
    bool isLoad;
};

FinalMod_Module_Define(ModStruct) {
    ModDL mod;
    FinalModMeta *meta;
    FinalModWrap *wrap;

    const char *path;
    const char *name;
};

ModStruct* createModStructWithMeta(const char *path, const char *name);

bool modStructLoader(ModStruct *fms);
bool modStructUnloader(ModStruct *fms);
void * modStructLoaderSym(ModStruct *fms, const char *sym);
bool modStructLoaderFinalModMeta(ModStruct *fms);
bool modStructLoaderFinalModWrap(ModStruct *fms);


// 对于模块加载失误报告信息
#define loadFailMessage() \
    dlerror()

void modStructLoaderFailMessage();

#endif  //!__MODBUILDIN__H__